Skip to content

窗口模块总览 - Overview ​

本分类做什么 ​

围绕 HWND 与 绑定窗口:查询/枚举窗口、几何与坐标变换、标题与类名、剪贴板与字符串发送、进程与图标等。多数接口的 坐标是否相对绑定窗口 依 绑定模式 与接口说明而定,需与 图像识别、图像处理 文档中的「相对窗口」说明交叉阅读。


一、绑定类:先绑再操作 ​

接口差异
BindWindow基础绑定,参数相对简单。
BindWindowEx高级绑定,更多模式/扩展参数(截图、键鼠后端等常与后续 SetConfig 配合)。
UnBindWindow解除绑定,之后 MatchWindows* 等不再针对该窗。
GetBindWindow查询当前绑定 HWND。
DownCpu绑定后降低目标进程 CPU:图色延迟或 DX Present 限帧;刷新变慢是功能本身。

选型:一般脚本 BindWindow 够用;需要 后台截图/特殊键鼠/DPI 等 → BindWindowEx + 设置。绑定 DX 后若目标 CPU 过高,可用 DownCpu 限帧或加延迟。


二、查找与枚举:按「精确句柄」还是「枚举列表」 ​

类型代表接口差异
单窗查找FindWindow、FindWindowEx、FindWindowByProcess*、FindWindowSuper 等输入条件不同:类名/标题/进程名/PID/扩展条件。
枚举EnumWindow、EnumWindowByProcess*、EnumProcess 等返回 一批 窗口或进程,需自行循环筛选。
特殊窗口GetSpecialWindow、EnumWindowSuper、FindWindowSuper桌面、任务栏等特殊句柄,权限与系统版本可能影响结果。

差异要点:Find* 返回 第一个满足 的句柄;Enum* 需 回调或列表 遍历;ByProcess 系列以 进程 为锚缩小范围。


三、几何与坐标 ​

方向接口差异
窗口矩形GetWindowRect、GetClientRect前者含边框相对屏幕;后者 客户区,用于点击/截图区域换算。
坐标互转ClientToScreen、ScreenToClient客户区坐标 ↔ 屏幕坐标,绑定窗口 下图点找色常用。
尺寸与状态GetClientSize、SetWindowSize、SetClientSize、SetWindowState读/改客户区或整窗尺寸、最小化最大化等。
锁定与限制LockWindowSize、LockWindowPosition、DisableMinMax禁止拖动边框改大小、禁止拖动标题栏移动、禁止最大/最小化按钮。
DPI / 缩放GetWindowDpiAwarenessScale、GetScaleFromWindows前者偏 DPI 感知;后者常与 图像识别 matchVal/scale 联动。
VNC 客户区偏移SetClientLocationVNC 全屏帧无法自动得到客户区屏幕位置时,人工设置客户区左上角在远程画面中的偏移;见设置分类详情。

四、信息与进程 ​

接口用途
GetWindowTitle、GetWindowClass、GetWindowProcessPath、GetProcessInfo标题、类名、路径、进程详细信息。
GetWindowThreadId、GetWindowProcessId线程/进程 ID,用于注入、挂接等。
GetProcessIconImage取进程图标为图(常配合界面展示)。

五、交互与数据 ​

接口差异
SendString向窗口发文本,不自动开输入法;Edit/RichEdit 优先整串插入。
SendString2与 SendString 类似,但发送前强制打开中文输入法(部分程序可能卡死,慎用)。
SendStringEx从内存地址按指定编码读串再发送。
SendStringIme向绑定窗口发 IME 组合结果;必须配合 BindWindowEx dx.public.input.ime。
SendStringIme2IME 通道输入;mode=200 须在 Bind 前安装,0/1/2 发字,300 卸载。
SetClipboard、GetClipboard剪贴板读写(优先 Unicode)。
SendPaste读剪贴板后走 SendString 逐字注入,兼容性最好。
SendPaste2发送 WM_PASTE,适合标准编辑控件。
SendPaste3模拟 Ctrl+V,适合只认加速键的自定义窗。
LockInput锁定或解除 前台键鼠;与 SetConfigByKey 的 InputLock 一致,二选一即可。

六、其它 ​

接口说明
ReleaseWindowsDll与注入/Hook 相关时的 卸载 场景,见详情页。
MoveWindow、SetWindowText、SetWindowTransparent移动、改标题、透明度。

七、快速选型 ​

需求建议
后台截图 + 找图BindWindowEx + 配置截图模式 + 图像识别 MatchWindows*
DX 绑定后降 CPUDownCpu(display="dx";刷新变慢是功能本身)
VNC 全屏 + 窗口坐标脚本BindWindowEx(vnc) + SetClientLocation + MatchWindows* / MoveTo
本机摄像头当截图源BindWindow / BindWindowEx 的 display="camera" + SetConfig 的 Camera*。hwnd 可为 0。实际像素用 GetClientSize 或 GetBindCameraInfo
只取某控件区域坐标GetClientRect + ClientToScreen
多开程序要选第 N 个窗口EnumWindow / FindWindowEx 循环,勿假设 FindWindow 唯一
向窗口输入中文/文本优先 SendString;必须开系统 IME 再用 SendString2;走 IME 通道用 SendStringIme / SendStringIme2
粘贴剪贴板Edit → SendPaste2;兼容兜底 → SendPaste;只认 Ctrl+V → SendPaste3
防止用户干扰前台键鼠LockInput(LockInput(1)),结束务必 LockInput(0);与 SetConfigByKey 的 InputLock 二选一

更细的参数与 绑定模式表 以各接口详情页及 设置 中的键说明为准。